#include "hero.h"
#include<QPropertyAnimation>
#include<QDebug>

hero::hero(QString a)
{
    //初始化加载
    tom.load(a);
    //缩放
    tom=tom.scaled(tom.width()*0.2,tom.height()*0.2);
    //xy坐标
    h_x=15;
    h_y=(350-tom.height())*0.5;

    //矩形框
    h_rect.setWidth(tom.width()-30);
    h_rect.setHeight(tom.height()-30);//为了让碰撞更加靠近
    h_rect.moveTo(h_x+15,h_y+15);
}

void hero::setPosition(int x, int y)
{

    this->setProperty("geometry",true);//瞎搞的。。
    QPropertyAnimation *ani=new QPropertyAnimation(this,"geometry");
    ani->setDuration(1000);
    ani->setStartValue(QRect(this->h_x,this->h_y,tom.width(),tom.height()));
    h_x=x;
    h_y=y;

    h_rect.moveTo(h_x+15,h_y+15);//找到BUG了！

    ani->setEndValue(QRect(this->h_x,this->h_y,tom.width(),tom.height()));
    //缓和曲线
    ani->setEasingCurve(QEasingCurve::InCubic);

    ani->start();

}

//游戏2射击子弹
void hero::shoot()
{
    //累加时间间隔记录变量
    recoder++;
    //如果间隔未达到要求，不发射子弹
    if(recoder<40){
        return;
    }
    //达到间隔要求
    recoder=0;

    //发射
    for(int i=0;i<30;i++){
        if(bullets[i].is_free1){
            bullets[i].is_free1=false;
            //设置子弹坐标
            bullets[i].b_x=h_x+h_rect.width()*0.5-5;
            bullets[i].b_y=h_y-50;
            //一发一发的发
            break;
        }
    }

}
